﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoADatos.Entidades;
using AccesoADatos;


namespace ReglasDeNegocio
{
    public class CategoriaLogica
    {
        #region Atributos
        
        String _nombre;
        String _descripcion;
        String _empate;
        String _dos_jugadores;
        String _imagenRuta;

        #endregion


        #region Encapsulamiento
        public String Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }
     
        public String Descripcion
        {
            get { return _descripcion; }
            set { _descripcion = value; }
        }
   
        public String Empate
        {
            get { return _empate; }
            set { _empate = value; }
        }
      
        public String Dos_jugadores
        {
            get { return _dos_jugadores; }
            set { _dos_jugadores = value; }
        }
     

        public String ImagenRuta
        {
            get { return _imagenRuta; }
            set { _imagenRuta = value; }
        }

        #endregion

        #region Metodos

        ///<summary>
        ///Descripción: Método para pasar los parametros a la capa de datos para su posterior insercion del nuevo usuario
        ///Variable: bool:retorno
        ///</summary>
        public bool InsertarCategoria(String nombreCat,String descripcionCat,String empateCat,String dosjugadores,String imgRuta)
        {

            bool retorno=false ;
            try
            {

                ///Consulta el alias de un usuario en BD

                AccesoCategoria accesoC = new AccesoCategoria();
                retorno = accesoC.AgregarCategoria(nombreCat,descripcionCat,empateCat,dosjugadores,imgRuta);

                return retorno;

            }
            catch (ArgumentNullException ValorNulo)///Base de datos retorna valor nulo
            {

            }
            catch (Exception e)///Captura los demas errores
            {

            }

            return retorno;

        }

        ///<summary>
        ///Descripción: Método para pasar el parametro a la capa de datos para la busqueda de la categoria
        ///Variable: Categoria:retorno
        ///</summary>

        public Categoria BuscarCategoria(string nombreCategoria)
        //public String BuscarCategoria(string nombreCategoria)
        {

    
            Categoria retorno = new Categoria();
            AccesoCategoria accesoC = new AccesoCategoria();

            try
            {

                ///Consulta una categoria en la bd
    
               retorno = accesoC.AccesoBuscarCategoria(nombreCategoria);
               return retorno;
               //if (retorno != null)
               //{
               //    return "obj  no es nulo en la logica";
               //}
               //return retorno.NombreCategoria;
               // return accesoC.AccesoBuscarCategoria(nombreCategoria);

            }
            catch (Exception e)///Captura los demas errores
            {
                return null;
               // return accesoC.AccesoBuscarCategoria(nombreCategoria); ;
            }

          

        }

        public List<AccesoADatos.Entidades.Categoria> ConsultarTodasLasCategorias()
        {
            //Consultamos en base de datos la lista de las categorias existentes

            List<AccesoADatos.Entidades.Categoria> lista = new List<AccesoADatos.Entidades.Categoria>();
            AccesoCategoria accesoCategoria = new AccesoCategoria();
            lista = accesoCategoria.ConsultarAllCategorias();
            
            return lista;

        }

        public bool ModificarCategoria(Categoria modCategoria)
        {

            bool retorno = false;
            try
            {

                ///Consulta el alias de un usuario en BD

                AccesoCategoria accesoC = new AccesoCategoria();
                retorno = accesoC.ModificarCategoria(modCategoria.IdCategoria,modCategoria.NombreCategoria,modCategoria.DescripcionCategoria);
                //retorno = accesoC.AgregarCategoria(nombreCat, descripcionCat, empateCat, dosjugadores, imgRuta);

                return retorno;

            }
            catch (ArgumentNullException ValorNulo)///Base de datos retorna valor nulo
            {

            }
            catch (Exception e)///Captura los demas errores
            {

            }

            return retorno;

        }

        ///<summary>
        ///Descripcion: Método que consulta si existe la categoria en la BD.
        ///</summary>
        public Boolean RevisarCategoria(Categoria miCategoria)
        {

            this.Nombre = "categoria test";
            this.Descripcion = "descripcion test";
            this.Empate = "si";
            this.Dos_jugadores = "si";
            this.ImagenRuta = "una ruta";

            try
            {

                ///Consulta en base de datos si existe el cliente

                if (this.Nombre != miCategoria.NombreCategoria)
                    return true;
                else
                    return false;

            }
            catch (ArgumentNullException ValorNulo)///Base de datos retorna valor nulo
            {

            }
            catch (Exception e)///Captura los demas errores
            {

            }

            return false;

        }

        ///<summary>
        ///Descripción: Método para conocer si existe un cliente con su nombre aparte de el 
        ///</summary>
        public bool ExisteCategoria(String categoria)
        {

            AccesoCategoria miCategoria = new AccesoCategoria();

            return false;

        }

        #endregion 
    }
}
